#ifndef BasicIntervalSchedule_H
#define BasicIntervalSchedule_H

#include "IdentifiedObject.hpp"
#include <list>
#include "Boolean.hpp"
#include "Float.hpp"


#include "UnitSymbol.hpp"

namespace CIMPP {


class DateTime;
	/*
	Schedule of values at points in time.
	*/
	class BasicIntervalSchedule: public IdentifiedObject
	{

	public:
					CIMPP::DateTime* startTime; 	/* The time for the first time point. Default: '' */
					CIMPP::UnitSymbol value1Unit; 	/* Value1 units of measure. Default: 0 */
					CIMPP::UnitSymbol value2Unit; 	/* Value2 units of measure. Default: 0 */
				
		static const char debugName[];
		virtual const char* debugString();
		
		/* constructor initialising all attributes to null */
		BasicIntervalSchedule();
		virtual ~BasicIntervalSchedule();
	
		static void addConstructToMap(std::unordered_map<std::string, BaseClass* (*)()>& factory_map);
		static void addPrimitiveAssignFnsToMap(std::unordered_map<std::string, assign_function>&);
		static void addClassAssignFnsToMap(std::unordered_map<std::string, class_assign_function>&);
		static const BaseClassDefiner declare();

	};

	BaseClass* BasicIntervalSchedule_factory();
}
#endif
